using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._RasterDataset
{
    /// <summary>
    /// <para>Create Raster Dataset</para>
    /// <para>Creates an empty raster dataset.</para>
    /// <para>创建空栅格数据集。</para>
    /// </summary>    
    [DisplayName("Create Raster Dataset")]
    public class CreateRasterDataset : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public CreateRasterDataset()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_out_path">
        /// <para>Output Location</para>
        /// <para>The folder or geodatabase to store the raster dataset.</para>
        /// <para>用于存储栅格数据集的文件夹或地理数据库。</para>
        /// </param>
        /// <param name="_out_name">
        /// <para>Raster Dataset Name with Extension</para>
        /// <para><xdoc>
        ///   <para>The name, location and format for the dataset you are creating.</para>
        ///   <para>When storing the raster dataset in a file format, you need to specify the file extension:</para>
        ///   <bulletList>
        ///     <bullet_item>.bil for Esri BIL</bullet_item><para/>
        ///     <bullet_item>.bip for Esri BIP</bullet_item><para/>
        ///     <bullet_item>.bmp for BMP</bullet_item><para/>
        ///     <bullet_item>.bsq for Esri BSQ</bullet_item><para/>
        ///     <bullet_item>.dat for ENVI DAT</bullet_item><para/>
        ///     <bullet_item>.gif for GIF</bullet_item><para/>
        ///     <bullet_item>.img for ERDAS IMAGINE</bullet_item><para/>
        ///     <bullet_item>.jpg for JPEG</bullet_item><para/>
        ///     <bullet_item>.jp2 for JPEG 2000</bullet_item><para/>
        ///     <bullet_item>.png for PNG</bullet_item><para/>
        ///     <bullet_item>.tif for TIFF</bullet_item><para/>
        ///     <bullet_item>No extension for Esri Grid</bullet_item><para/>
        ///   </bulletList>
        ///   <para>When storing a raster dataset in a geodatabase, do not add a file extension to the name of the raster dataset.</para>
        ///   <para>When storing your raster dataset to a JPEG file, a JPEG 2000 file, a TIFF file, or a geodatabase, you can specify a Compression Type and Compression Quality in the geoprocessing Environments.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要创建的数据集的名称、位置和格式。</para>
        ///   <para>以文件格式存储栅格数据集时，需要指定文件扩展名：</para>
        ///   <bulletList>
        ///     <bullet_item>.bil for Esri BIL</bullet_item><para/>
        ///     <bullet_item>用于 Esri BIP 的 .bip</bullet_item><para/>
        ///     <bullet_item>BMP的.bmp</bullet_item><para/>
        ///     <bullet_item>.bsq for Esri BSQ</bullet_item><para/>
        ///     <bullet_item>ENVI DAT 的.dat</bullet_item><para/>
        ///     <bullet_item>.gif GIF</bullet_item><para/>
        ///     <bullet_item>.img 代表 ERDAS IMAGINE</bullet_item><para/>
        ///     <bullet_item>JPEG .jpg</bullet_item><para/>
        ///     <bullet_item>JPEG 2000 的 .jp2</bullet_item><para/>
        ///     <bullet_item>PNG 的.png</bullet_item><para/>
        ///     <bullet_item>TIFF .tif</bullet_item><para/>
        ///     <bullet_item>没有 Esri Grid 的扩展模块</bullet_item><para/>
        ///   </bulletList>
        ///   <para>在地理数据库中存储栅格数据集时，请勿在栅格数据集的名称中添加文件扩展名。</para>
        ///   <para>将栅格数据集存储为 JPEG 文件、JPEG 2000 文件、TIFF 文件或地理数据库时，可以在地理处理环境中指定压缩类型和压缩质量。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_pixel_type">
        /// <para>Pixel Type</para>
        /// <para><xdoc>
        ///   <para>The bit-depth (radiometric resolution) of the output raster dataset. If this is not specified, your raster dataset will be created with a default pixel type of 8-bit unsigned integer.</para>
        ///   <para>Not all data types are supported by all raster formats. Check the List of supported sensors help topic to be sure the format you are using will support the data type you need.</para>
        ///   <bulletList>
        ///     <bullet_item>1 bit—A 1-bit unsigned integer. The values can be 0 or 1.</bullet_item><para/>
        ///     <bullet_item>2 bit—A 2-bit unsigned integer. The values supported can be from 0 to 3.</bullet_item><para/>
        ///     <bullet_item>4 bit—A 4-bit unsigned integer. The values supported can be from 0 to 15.</bullet_item><para/>
        ///     <bullet_item>8 bit unsigned—An unsigned 8-bit data type. The values supported can be from 0 to 255.</bullet_item><para/>
        ///     <bullet_item>8 bit signed—A signed 8-bit data type. The values supported can be from -128 to 127.</bullet_item><para/>
        ///     <bullet_item>16 bit unsigned—A 16-bit unsigned data type. The values can range from 0 to 65,535.</bullet_item><para/>
        ///     <bullet_item>16 bit signed—A 16-bit signed data type. The values can range from -32,768 to 32,767.</bullet_item><para/>
        ///     <bullet_item>32 bit unsigned—A 32-bit unsigned data type. The values can range from 0 to 4,294,967,295.</bullet_item><para/>
        ///     <bullet_item>32 bit signed—A 32-bit signed data type. The values can range from -2,147,483,648 to 2,147,483,647.</bullet_item><para/>
        ///     <bullet_item>32 bit float—A 32-bit data type supporting decimals.</bullet_item><para/>
        ///     <bullet_item>64 bit—A 64-bit data type supporting decimals.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出栅格数据集的位深度（辐射分辨率）。如果未指定此值，则将使用默认像素类型 8 位无符号整数创建栅格数据集。</para>
        ///   <para>并非所有栅格格式都支持所有数据类型。查看支持的传感器列表帮助主题，以确保您使用的格式将支持所需的数据类型。</para>
        ///   <bulletList>
        ///     <bullet_item>1 位 - 1 位无符号整数。这些值可以是 0 或 1。</bullet_item><para/>
        ///     <bullet_item>2 位 - 2 位无符号整数。支持的值可以是 0 到 3。</bullet_item><para/>
        ///     <bullet_item>4 位 - 4 位无符号整数。支持的值可以介于 0 到 15 之间。</bullet_item><para/>
        ///     <bullet_item>8 位无符号 - 无符号的 8 位数据类型。支持的值可以介于 0 到 255 之间。</bullet_item><para/>
        ///     <bullet_item>8 位有符号 - 有符号的 8 位数据类型。支持的值可以介于 -128 到 127 之间。</bullet_item><para/>
        ///     <bullet_item>16 位无符号 - 16 位无符号数据类型。这些值的范围可以从 0 到 65,535。</bullet_item><para/>
        ///     <bullet_item>16 位有符号 - 16 位有符号数据类型。这些值的范围可以从 -32,768 到 32,767。</bullet_item><para/>
        ///     <bullet_item>32 位无符号 - 32 位无符号数据类型。这些值的范围可以从 0 到 4,294,967,295。</bullet_item><para/>
        ///     <bullet_item>32 位有符号 - 32 位有符号数据类型。这些值的范围可以从 -2,147,483,648 到 2,147,483,647。</bullet_item><para/>
        ///     <bullet_item>32 位浮点数 - 支持小数的 32 位数据类型。</bullet_item><para/>
        ///     <bullet_item>64 位 - 支持小数的 64 位数据类型。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_number_of_bands">
        /// <para>Number of Bands</para>
        /// <para>The number of bands that the output raster dataset will have.</para>
        /// <para>输出栅格数据集将具有的波段数。</para>
        /// </param>
        public CreateRasterDataset(object _out_path, object _out_name, _pixel_type_value _pixel_type, long _number_of_bands)
        {
            this._out_path = _out_path;
            this._out_name = _out_name;
            this._pixel_type = _pixel_type;
            this._number_of_bands = _number_of_bands;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Create Raster Dataset";

        public override string CallName => "management.CreateRasterDataset";

        public override List<string> AcceptEnvironments => ["compression", "configKeyword", "pyramid", "tileSize"];

        public override object[] ParameterInfo => [_out_path, _out_name, _cellsize, _pixel_type.GetGPValue(), _raster_spatial_reference, _number_of_bands, _config_keyword, _pyramids, _tile_size, _compression, _pyramid_origin, _out_raster_dataset];

        /// <summary>
        /// <para>Output Location</para>
        /// <para>The folder or geodatabase to store the raster dataset.</para>
        /// <para>用于存储栅格数据集的文件夹或地理数据库。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Location")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_path { get; set; }


        /// <summary>
        /// <para>Raster Dataset Name with Extension</para>
        /// <para><xdoc>
        ///   <para>The name, location and format for the dataset you are creating.</para>
        ///   <para>When storing the raster dataset in a file format, you need to specify the file extension:</para>
        ///   <bulletList>
        ///     <bullet_item>.bil for Esri BIL</bullet_item><para/>
        ///     <bullet_item>.bip for Esri BIP</bullet_item><para/>
        ///     <bullet_item>.bmp for BMP</bullet_item><para/>
        ///     <bullet_item>.bsq for Esri BSQ</bullet_item><para/>
        ///     <bullet_item>.dat for ENVI DAT</bullet_item><para/>
        ///     <bullet_item>.gif for GIF</bullet_item><para/>
        ///     <bullet_item>.img for ERDAS IMAGINE</bullet_item><para/>
        ///     <bullet_item>.jpg for JPEG</bullet_item><para/>
        ///     <bullet_item>.jp2 for JPEG 2000</bullet_item><para/>
        ///     <bullet_item>.png for PNG</bullet_item><para/>
        ///     <bullet_item>.tif for TIFF</bullet_item><para/>
        ///     <bullet_item>No extension for Esri Grid</bullet_item><para/>
        ///   </bulletList>
        ///   <para>When storing a raster dataset in a geodatabase, do not add a file extension to the name of the raster dataset.</para>
        ///   <para>When storing your raster dataset to a JPEG file, a JPEG 2000 file, a TIFF file, or a geodatabase, you can specify a Compression Type and Compression Quality in the geoprocessing Environments.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要创建的数据集的名称、位置和格式。</para>
        ///   <para>以文件格式存储栅格数据集时，需要指定文件扩展名：</para>
        ///   <bulletList>
        ///     <bullet_item>.bil for Esri BIL</bullet_item><para/>
        ///     <bullet_item>用于 Esri BIP 的 .bip</bullet_item><para/>
        ///     <bullet_item>BMP的.bmp</bullet_item><para/>
        ///     <bullet_item>.bsq for Esri BSQ</bullet_item><para/>
        ///     <bullet_item>ENVI DAT 的.dat</bullet_item><para/>
        ///     <bullet_item>.gif GIF</bullet_item><para/>
        ///     <bullet_item>.img 代表 ERDAS IMAGINE</bullet_item><para/>
        ///     <bullet_item>JPEG .jpg</bullet_item><para/>
        ///     <bullet_item>JPEG 2000 的 .jp2</bullet_item><para/>
        ///     <bullet_item>PNG 的.png</bullet_item><para/>
        ///     <bullet_item>TIFF .tif</bullet_item><para/>
        ///     <bullet_item>没有 Esri Grid 的扩展模块</bullet_item><para/>
        ///   </bulletList>
        ///   <para>在地理数据库中存储栅格数据集时，请勿在栅格数据集的名称中添加文件扩展名。</para>
        ///   <para>将栅格数据集存储为 JPEG 文件、JPEG 2000 文件、TIFF 文件或地理数据库时，可以在地理处理环境中指定压缩类型和压缩质量。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Raster Dataset Name with Extension")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_name { get; set; }


        /// <summary>
        /// <para>Cellsize</para>
        /// <para>The cell size for the new raster dataset.</para>
        /// <para>新栅格数据集的像元大小。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Cellsize")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double? _cellsize { get; set; } = null;


        /// <summary>
        /// <para>Pixel Type</para>
        /// <para><xdoc>
        ///   <para>The bit-depth (radiometric resolution) of the output raster dataset. If this is not specified, your raster dataset will be created with a default pixel type of 8-bit unsigned integer.</para>
        ///   <para>Not all data types are supported by all raster formats. Check the List of supported sensors help topic to be sure the format you are using will support the data type you need.</para>
        ///   <bulletList>
        ///     <bullet_item>1 bit—A 1-bit unsigned integer. The values can be 0 or 1.</bullet_item><para/>
        ///     <bullet_item>2 bit—A 2-bit unsigned integer. The values supported can be from 0 to 3.</bullet_item><para/>
        ///     <bullet_item>4 bit—A 4-bit unsigned integer. The values supported can be from 0 to 15.</bullet_item><para/>
        ///     <bullet_item>8 bit unsigned—An unsigned 8-bit data type. The values supported can be from 0 to 255.</bullet_item><para/>
        ///     <bullet_item>8 bit signed—A signed 8-bit data type. The values supported can be from -128 to 127.</bullet_item><para/>
        ///     <bullet_item>16 bit unsigned—A 16-bit unsigned data type. The values can range from 0 to 65,535.</bullet_item><para/>
        ///     <bullet_item>16 bit signed—A 16-bit signed data type. The values can range from -32,768 to 32,767.</bullet_item><para/>
        ///     <bullet_item>32 bit unsigned—A 32-bit unsigned data type. The values can range from 0 to 4,294,967,295.</bullet_item><para/>
        ///     <bullet_item>32 bit signed—A 32-bit signed data type. The values can range from -2,147,483,648 to 2,147,483,647.</bullet_item><para/>
        ///     <bullet_item>32 bit float—A 32-bit data type supporting decimals.</bullet_item><para/>
        ///     <bullet_item>64 bit—A 64-bit data type supporting decimals.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出栅格数据集的位深度（辐射分辨率）。如果未指定此值，则将使用默认像素类型 8 位无符号整数创建栅格数据集。</para>
        ///   <para>并非所有栅格格式都支持所有数据类型。查看支持的传感器列表帮助主题，以确保您使用的格式将支持所需的数据类型。</para>
        ///   <bulletList>
        ///     <bullet_item>1 位 - 1 位无符号整数。这些值可以是 0 或 1。</bullet_item><para/>
        ///     <bullet_item>2 位 - 2 位无符号整数。支持的值可以是 0 到 3。</bullet_item><para/>
        ///     <bullet_item>4 位 - 4 位无符号整数。支持的值可以介于 0 到 15 之间。</bullet_item><para/>
        ///     <bullet_item>8 位无符号 - 无符号的 8 位数据类型。支持的值可以介于 0 到 255 之间。</bullet_item><para/>
        ///     <bullet_item>8 位有符号 - 有符号的 8 位数据类型。支持的值可以介于 -128 到 127 之间。</bullet_item><para/>
        ///     <bullet_item>16 位无符号 - 16 位无符号数据类型。这些值的范围可以从 0 到 65,535。</bullet_item><para/>
        ///     <bullet_item>16 位有符号 - 16 位有符号数据类型。这些值的范围可以从 -32,768 到 32,767。</bullet_item><para/>
        ///     <bullet_item>32 位无符号 - 32 位无符号数据类型。这些值的范围可以从 0 到 4,294,967,295。</bullet_item><para/>
        ///     <bullet_item>32 位有符号 - 32 位有符号数据类型。这些值的范围可以从 -2,147,483,648 到 2,147,483,647。</bullet_item><para/>
        ///     <bullet_item>32 位浮点数 - 支持小数的 32 位数据类型。</bullet_item><para/>
        ///     <bullet_item>64 位 - 支持小数的 64 位数据类型。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Pixel Type")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _pixel_type_value _pixel_type { get; set; }

        public enum _pixel_type_value
        {
            /// <summary>
            /// <para>1 bit</para>
            /// <para>1 bit—A 1-bit unsigned integer. The values can be 0 or 1.</para>
            /// <para>1 位 - 1 位无符号整数。这些值可以是 0 或 1。</para>
            /// </summary>
            [Description("1 bit")]
            [GPEnumValue("1_BIT")]
            _1_BIT,

            /// <summary>
            /// <para>2 bit</para>
            /// <para>2 bit—A 2-bit unsigned integer. The values supported can be from 0 to 3.</para>
            /// <para>2 位 - 2 位无符号整数。支持的值可以是 0 到 3。</para>
            /// </summary>
            [Description("2 bit")]
            [GPEnumValue("2_BIT")]
            _2_BIT,

            /// <summary>
            /// <para>4 bit</para>
            /// <para>4 bit—A 4-bit unsigned integer. The values supported can be from 0 to 15.</para>
            /// <para>4 位 - 4 位无符号整数。支持的值可以介于 0 到 15 之间。</para>
            /// </summary>
            [Description("4 bit")]
            [GPEnumValue("4_BIT")]
            _4_BIT,

            /// <summary>
            /// <para>8 bit unsigned</para>
            /// <para>8 bit unsigned—An unsigned 8-bit data type. The values supported can be from 0 to 255.</para>
            /// <para>8 位无符号 - 无符号的 8 位数据类型。支持的值可以介于 0 到 255 之间。</para>
            /// </summary>
            [Description("8 bit unsigned")]
            [GPEnumValue("8_BIT_UNSIGNED")]
            _8_BIT_UNSIGNED,

            /// <summary>
            /// <para>8 bit signed</para>
            /// <para>8 bit signed—A signed 8-bit data type. The values supported can be from -128 to 127.</para>
            /// <para>8 位有符号 - 有符号的 8 位数据类型。支持的值可以介于 -128 到 127 之间。</para>
            /// </summary>
            [Description("8 bit signed")]
            [GPEnumValue("8_BIT_SIGNED")]
            _8_BIT_SIGNED,

            /// <summary>
            /// <para>16 bit unsigned</para>
            /// <para>16 bit unsigned—A 16-bit unsigned data type. The values can range from 0 to 65,535.</para>
            /// <para>16 位无符号 - 16 位无符号数据类型。这些值的范围可以从 0 到 65,535。</para>
            /// </summary>
            [Description("16 bit unsigned")]
            [GPEnumValue("16_BIT_UNSIGNED")]
            _16_BIT_UNSIGNED,

            /// <summary>
            /// <para>16 bit signed</para>
            /// <para>16 bit signed—A 16-bit signed data type. The values can range from -32,768 to 32,767.</para>
            /// <para>16 位有符号 - 16 位有符号数据类型。这些值的范围可以从 -32,768 到 32,767。</para>
            /// </summary>
            [Description("16 bit signed")]
            [GPEnumValue("16_BIT_SIGNED")]
            _16_BIT_SIGNED,

            /// <summary>
            /// <para>32 bit unsigned</para>
            /// <para>32 bit unsigned—A 32-bit unsigned data type. The values can range from 0 to 4,294,967,295.</para>
            /// <para>32 位无符号 - 32 位无符号数据类型。这些值的范围可以从 0 到 4,294,967,295。</para>
            /// </summary>
            [Description("32 bit unsigned")]
            [GPEnumValue("32_BIT_UNSIGNED")]
            _32_BIT_UNSIGNED,

            /// <summary>
            /// <para>32 bit signed</para>
            /// <para>32 bit signed—A 32-bit signed data type. The values can range from -2,147,483,648 to 2,147,483,647.</para>
            /// <para>32 位有符号 - 32 位有符号数据类型。这些值的范围可以从 -2,147,483,648 到 2,147,483,647。</para>
            /// </summary>
            [Description("32 bit signed")]
            [GPEnumValue("32_BIT_SIGNED")]
            _32_BIT_SIGNED,

            /// <summary>
            /// <para>32 bit float</para>
            /// <para>32 bit float—A 32-bit data type supporting decimals.</para>
            /// <para>32 位浮点数 - 支持小数的 32 位数据类型。</para>
            /// </summary>
            [Description("32 bit float")]
            [GPEnumValue("32_BIT_FLOAT")]
            _32_BIT_FLOAT,

            /// <summary>
            /// <para>64 bit</para>
            /// <para>64 bit—A 64-bit data type supporting decimals.</para>
            /// <para>64 位 - 支持小数的 64 位数据类型。</para>
            /// </summary>
            [Description("64 bit")]
            [GPEnumValue("64_BIT")]
            _64_BIT,

        }

        /// <summary>
        /// <para>Spatial Reference for Raster</para>
        /// <para><xdoc>
        ///   <para>The coordinate system for the output raster dataset.</para>
        ///   <para>If this is not specified, the coordinate system set in the environment settings will be used.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出栅格数据集的坐标系。</para>
        ///   <para>如果未指定，则将使用环境设置中设置的坐标系。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Spatial Reference for Raster")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _raster_spatial_reference { get; set; } = null;


        /// <summary>
        /// <para>Number of Bands</para>
        /// <para>The number of bands that the output raster dataset will have.</para>
        /// <para>输出栅格数据集将具有的波段数。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Number of Bands")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public long _number_of_bands { get; set; }


        /// <summary>
        /// <para>Configuration Keyword</para>
        /// <para>Specifies the storage parameters (configuration) for a file or enterprise geodatabase. Configuration keywords are set up by your database administrator.</para>
        /// <para>指定文件地理数据库或企业级地理数据库的存储参数（配置）。配置关键字由数据库管理员设置。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Configuration Keyword")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _config_keyword { get; set; } = null;


        /// <summary>
        /// <para>Create pyramids</para>
        /// <para><xdoc>
        ///   <para>Creates pyramids.</para>
        ///   <para>For Pyramid Levels, specify a number of -1 or higher. A value of 0 will not build any pyramids, and a value of -1 will automatically determine the correct number of pyramid layers to create.</para>
        ///   <para>The Pyramid Resampling Technique defines how the data will be resampled when building the pyramids.</para>
        ///   <bulletList>
        ///     <bullet_item>NEAREST—Nearest neighbor should be used for nominal data or raster datasets with color maps, such as land-use or pseudo color images.</bullet_item><para/>
        ///     <bullet_item>BILINEAR—Bilinear interpolation is best used with continuous data, such as satellite imagery or aerial photography.</bullet_item><para/>
        ///     <bullet_item>CUBIC—Cubic convolution is best used with continuous data, such as satellite imagery or aerial photography. It is similar to bilinear interpolation; however, it resamples the data using a larger matrix.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The Pyramid Compression Type defines the method used when compressing the pyramids.</para>
        ///   <bulletList>
        ///     <bullet_item>DEFAULT—This uses the compression that is normally used by the raster dataset format.</bullet_item><para/>
        ///     <bullet_item>LZ77—A lossless compression. The values of the cells in the raster will not be changed.</bullet_item><para/>
        ///     <bullet_item>JPEG—A lossy compression.</bullet_item><para/>
        ///     <bullet_item>NONE—No data compression.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>创建金字塔。</para>
        ///   <para>对于金字塔级别，指定 -1 或更高的数字。值为 0 不会构建任何金字塔，值为 -1 将自动确定要创建的正确金字塔层数。</para>
        ///   <para>金字塔重采样技术定义了在构建金字塔时如何对数据进行重采样。</para>
        ///   <bulletList>
        ///     <bullet_item>NEAREST—最近邻应用于名义数据或具有彩色地图的栅格数据集，例如土地利用或伪彩色影像。</bullet_item><para/>
        ///     <bullet_item>双线性 - 双线性插值最适合用于连续数据，例如卫星影像或航空摄影。</bullet_item><para/>
        ///     <bullet_item>立方 - 立方卷积最适合用于连续数据，例如卫星影像或航空摄影。它类似于双线性插值;但是，它使用更大的矩阵对数据进行重新采样。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>金字塔压缩类型定义压缩金字塔时使用的方法。</para>
        ///   <bulletList>
        ///     <bullet_item>DEFAULT - 这将使用栅格数据集格式通常使用的压缩。</bullet_item><para/>
        ///     <bullet_item>LZ77 - 无损压缩。栅格中像元的值不会更改。</bullet_item><para/>
        ///     <bullet_item>JPEG - 有损压缩。</bullet_item><para/>
        ///     <bullet_item>NONE - 无数据压缩。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Create pyramids")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _pyramids { get; set; } = null;


        /// <summary>
        /// <para>Tile size</para>
        /// <para><xdoc>
        ///   <para>Specifies the size of the tiles.</para>
        ///   <para>The tile width controls the number of pixels you can store in each tile. This is specified as a number of pixels in x. The default tile width is 128.</para>
        ///   <para>The tile height controls the number of pixels you can store in each tile. This is specified as a number of pixels in y. The default tile height is 128.</para>
        ///   <para>Only geodatabases and enterprise geodatabases use tile size.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定切片的大小。</para>
        ///   <para>磁贴宽度控制可以在每个磁贴中存储的像素数。这被指定为 x 中的像素数。默认磁贴宽度为 128。</para>
        ///   <para>磁贴高度控制可以在每个磁贴中存储的像素数。这被指定为 y 中的像素数。默认磁贴高度为 128。</para>
        ///   <para>只有地理数据库和企业级地理数据库使用切片大小。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Tile size")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _tile_size { get; set; } = null;


        /// <summary>
        /// <para>Compression</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of compression to store the raster dataset.</para>
        ///   <bulletList>
        ///     <bullet_item>LZ77—Lossless compression that preserves all raster cell values.</bullet_item><para/>
        ///     <bullet_item>Jpeg—Lossy compression that uses the public JPEG compression algorithm. If you choose JPEG, you can also specify the compression quality. The valid compression quality value ranges are from 0 to 100. This compression can be used for JPEG files and TIFF files.</bullet_item><para/>
        ///     <bullet_item>Jpeg 2000—Lossy compression.</bullet_item><para/>
        ///     <bullet_item>Packbits—PackBits compression for TIFF files.</bullet_item><para/>
        ///     <bullet_item>Lzw—Lossless compression that preserves all raster cell values.</bullet_item><para/>
        ///     <bullet_item>Rle—Run-length encoding for IMG files.</bullet_item><para/>
        ///     <bullet_item>Ccitt Group 3—Lossless compression for 1-bit data.</bullet_item><para/>
        ///     <bullet_item>Ccitt Group 4—Lossless compression for 1-bit data.</bullet_item><para/>
        ///     <bullet_item>Ccitt 1D—Lossless compression for 1-bit data.</bullet_item><para/>
        ///     <bullet_item>None—No compression will occur. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定用于存储栅格数据集的压缩类型。</para>
        ///   <bulletList>
        ///     <bullet_item>LZ77 - 保留所有栅格像元值的无损压缩。</bullet_item><para/>
        ///     <bullet_item>Jpeg - 使用公共 JPEG 压缩算法的有损压缩。如果选择 JPEG，还可以指定压缩质量。有效的压缩质量值范围为 0 到 100。此压缩可用于 JPEG 文件和 TIFF 文件。</bullet_item><para/>
        ///     <bullet_item>Jpeg 2000 - 有损压缩。</bullet_item><para/>
        ///     <bullet_item>Packbit - TIFF 文件的 PackBits 压缩。</bullet_item><para/>
        ///     <bullet_item>Lzw - 保留所有栅格像元值的无损压缩。</bullet_item><para/>
        ///     <bullet_item>Rle - IMG 文件的运行长度编码。</bullet_item><para/>
        ///     <bullet_item>Ccitt Group 3 - 1 位数据的无损压缩。</bullet_item><para/>
        ///     <bullet_item>Ccitt Group 4 — 1 位数据的无损压缩。</bullet_item><para/>
        ///     <bullet_item>Ccitt 1D - 1 位数据的无损压缩。</bullet_item><para/>
        ///     <bullet_item>无—不会发生压缩。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Compression")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _compression { get; set; } = null;


        /// <summary>
        /// <para>Pyramid Reference Point</para>
        /// <para><xdoc>
        ///   <para>The origination location of the raster pyramid. It is recommended that you specify this point if you plan on building large mosaics in a file geodatabase or enterprise geodatabase, especially if you plan on mosaicking to them over time (for example, for updating).</para>
        ///   <para>The pyramid reference point should be set to the upper left corner of your raster dataset.</para>
        ///   <para>In setting this point for a file geodatabase or enterprise geodatabase, partial pyramiding will be used when updating with a new mosaicked raster dataset. Partial pyramiding updated the parts of the pyramid that do not exist due to the new mosaicked datasets. Therefore, it is good practice to set your pyramid reference point so that your entire raster mosaic will be below and to the right of this point. However, a pyramid reference point should not be set too large either.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>栅格金字塔的起始位置。如果您计划在文件地理数据库或企业级地理数据库中构建大型镶嵌，特别是如果您计划在一段时间内对它们进行镶嵌（例如，用于更新），则建议您指定此点。</para>
        ///   <para>金字塔参考点应设置为栅格数据集的左上角。</para>
        ///   <para>在为文件地理数据库或企业级地理数据库设置此点时，在使用新的镶嵌栅格数据集进行更新时，将使用部分金字塔。部分金字塔更新了金字塔中由于新的镶嵌数据集而不存在的部分。因此，最好设置金字塔参考点，使整个栅格镶嵌位于该点的下方和右侧。但是，金字塔参考点也不应设置得太大。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Pyramid Reference Point")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _pyramid_origin { get; set; } = null;


        /// <summary>
        /// <para>Output Raster Dataset</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Raster Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_raster_dataset { get; set; }


        public CreateRasterDataset SetEnv(object compression = null, object configKeyword = null, object pyramid = null, double[] tileSize = null)
        {
            base.SetEnv(compression: compression, configKeyword: configKeyword, pyramid: pyramid, tileSize: tileSize);
            return this;
        }

    }

}